package main

import (
	"fmt"
	"io/fs"
	"log"
	"os"
	"path/filepath"
)

// listFilesAndDirs 递归地列出指定路径下的所有文件和子文件夹。
func listFilesAndDirs(path string) {
	err := filepath.WalkDir(path, func(p string, d fs.DirEntry, err error) error {
		if err != nil {
			return err
		}
		fmt.Println(p)
		return nil
	})

	if err != nil {
		log.Fatal(err)
	}
}

func main() {
	// 获取当前工作目录
	dir, err := os.Getwd()
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Listing all files and directories in: %s\n", dir)
	listFilesAndDirs(dir)
}

//
//func main() {
//	// 后续升级：使用context进行优雅退出，使用sync进行等待协程完成退出，去除select
//	go func() {
//		ticker1 := time.NewTicker(1 * time.Second)
//		defer ticker1.Stop()
//
//		for {
//			select {
//			case <-ticker1.C:
//				fmt.Println("ticker1 on ", time.Now())
//			}
//		}
//	}()
//	select {}
//}
